/*
* 1.用floyd算法求出任意两点之间的距离
* 2.依次计算maxd[i]: 表示和连通的且距离i最远的点的距离
* 3. case 1: 所有maxd[i]的最大值, 即本身就是连通块
*    case 2: 枚举在哪两个点之间连边. i, j, 需要满足d[i, j] = INF  maxd[i] + dist[i, j] + maxd[j]
* 
*/
#pragma GCC optimize("O1,O2,O3,Ofast")
#pragma GCC optimize("no-stack-protector,unroll-loops,fast-math,inline")
#pragma GCC target("avx,avx2,fma")
#pragma GCC target("sse,sse2,sse3,sse4,sse4.1,sse4.2,ssse3")

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
// #define ONLINE_GUDGE
using namespace std;
using PII = pair<int, int>;
#define x first
#define y second
const int N = 200;
const double INF = 1e20;

int n;
PII q[N];
char g[N][N];
double d[N][N], maxd[N];

double GetDist(PII a, PII b)
{
    double dx = a.x - b.x, dy = a.y - b.y;
    return sqrt(dx*dx + dy * dy);
}

int main()
{
    #ifdef ONLINE_JUDGE

    #else
        freopen("./in.txt", "r", stdin);
    #endif

    ios::sync_with_stdio(0); cin.tie(0);

    cin >> n;

    for(int i = 0; i < n; i++) cin >> q[i].x >> q[i].y;

    for(int i = 0; i < n; i++) cin >> g[i];

    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(i != j){
              if(g[i][j] == '1') d[i][j] = GetDist(q[i], q[j]); // 两点相连
              else d[i][j] = INF;  // 不连通
            } 

    // 1.用floyd算法求出任意两点之间的距离
    for(int k = 0; k < n; k++)
        for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
                d[i][j] = min(d[i][j], d[i][k] + d[k][j]);

    // 2.依次计算maxd[i]: 表示和连通的且距离i最远的点的距离，即连通块的最大直径
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(d[i][j] < INF) maxd[i] = max(maxd[i], d[i][j]);
        
    // 3.所有情况判断
    // case 1: 本身就是连通块
    double res1 = 0;

    for(int i = 0; i < n; i++) res1 = max(res1, maxd[i]);

    double res2 = INF;
    
    // case 2:连接两个非连通点
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(d[i][j] >= INF) 
                res2 = min(res2, GetDist(q[i], q[j]) + maxd[i] + maxd[j]);

    
    printf("%lf\n",max(res1, res2));
    return 0;
}